import java.util.*;

public class VidPoker {

	public enum CSuit {HEARTS, CLUBS, SPADES, DIAMONDS};
	public enum CValue {TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE};
	
	private static class Card {	
		CSuit s;
		CValue v;
		
		public Card() {
			s = CSuit.HEARTS;
			v = CValue.TWO;
		}
		
		public void modCard(int suit, int value) {
			if(suit == 0) {
				s = CSuit.HEARTS;
			}
			else if (suit == 1) {
				s = CSuit.CLUBS;
			}
			else if (suit == 2) {
				s = CSuit.SPADES;
			}
			else {
				s = CSuit.DIAMONDS;
			}
			
			if(value == 0) {
				v = CValue.TWO;
			}
			else if(value == 1) {
				v = CValue.THREE;
			}
			else if(value == 2) {
				v = CValue.FOUR;
			}
			else if(value == 3) {
				v = CValue.FIVE;
			}
			else if(value == 4) {
				v = CValue.SIX;
			}
			else if(value == 5) {
				v = CValue.SEVEN;
			}
			else if(value == 6) {
				v = CValue.EIGHT;
			}
			else if(value == 7) {
				v = CValue.NINE;
			}
			else if(value == 8) {
				v = CValue.TEN;
			}
			else if(value == 9) {
				v = CValue.JACK;
			}
			else if(value == 10) {
				v = CValue.QUEEN;
			}
			else if(value == 11) {
				v = CValue.KING;
			}
			else {
				v = CValue.ACE;
			}
		}
		
		public void displayCard() {
			System.out.println(s + " " + v);
		}
	}
	
	public static class Deck {
		Stack <Card> cards;
		int size;
		
		public Deck() {
			size = 0;
			cards = new Stack();
			for(int i = 0; i < 13; i++) {
				for(int j = 0; j < 4; j++) {
					Card c = new Card();
					c.modCard(j, i);
					cards.push(c);
					size++;
				}
			}
		}
		
		public void Shuffle() {
			try {
				Card[] temp = new Card[cards.size()];
				for(int i = 0; i < 52; i++) {
					temp[i] = cards.pop();
				}
				for(int j = 0; j < 52; j++) {
					Card tempCard = temp[j];
					Random num = new Random();
					int swapCardPos = num.nextInt(52);
					temp[j] = temp[swapCardPos];
					temp[swapCardPos] = tempCard;
				}
				for(int m = 0; m < temp.length; m++) {
					cards.push(temp[m]);
				}
			}
			catch(NullPointerException e) {}
		}
		
		public Card drawCard() {;
			return cards.pop();
		}
		
		public void viewCard(int i) {
			cards.get(i).displayCard();
		}
		
		public boolean emptiness() {
			if(cards.empty() == true) {
				return true;
			}
			return false;
		}
		
		public int deckSize() {
			return size;
		}
	}
	
	public static void main(String[] args) {}
}